#include <iostream>
#include <stdlib.h>
#include <unistd.h>
#include <signal.h>
using namespace std;

int main()
{
    sigset_t t1,t2;
    sigemptyset(&t1);
    sigemptyset(&t2);
    sigaddset(&t1,2);
    sigaddset(&t2,40);

    sigprocmask(SIG_BLOCK,&t1,nullptr);
    sigprocmask(SIG_BLOCK,&t2,nullptr);

    int cnt=5;
    while(cnt)
    {
        cout<<cnt--<<endl;
        // kill(getpid(),2);
        kill(getpid(),4);
    }
    sigdelset(&t1,2);
    sigdelset(&t1,40);

    return 0;
}
// void sigcb(int singo)
// {
//         cout<<singo<<endl;
// }

// int main()
// {
//     signal(SIGINT,sigcb);
//     kill(getpid(),SIGINT);
//     return 0;
// }
// int main()
// {
//     struct sigaction t;
//     t.sa_handler=sigcb;
//     sigaction(SIGINT,&t,nullptr);
//     kill(getpid(),SIGINT);
//     return 0;
// }
// int main()
// {

//   pid_t id=fork();
//   if(id == 0)
//   {
//     int cnt=5;
//     while(cnt--)
//     {
//       cout<<"我是子进程："<<getpid()<<endl;
//       sleep(1);
//     }
//     kill(getpid(),3);
//   }
//   int status=0;
//   waitpid(id,&status,0);
//   printf("我的子进程status中core dump:%d\n",(status>>7)&1);
//   return 0;
// }



// #define LOG "log.txt"

// void handler(int signo)
// {
//   cout<<getpid()<<"收到了信号"<<signo<<endl;
//   alarm(1);
// }
// int main()
// {
//   int n1 = alarm(20); //设置一个20s的闹钟
//   cout<<n1<<endl; //由于历史没有闹钟，所以n1=0

//   sleep(15);
//   //休息了15s之后被叫醒
//   int n2 = alarm(30); //前一个闹钟还剩5，所以n2=5，

//   cout<<n1<<" "<<n2<<endl;
//   return 0;
// }
// int main()
// {
//   srand((uint64_t)time(nullptr));
//   umask(0);
//   // signal(SIGALRM,handler);
//   int cnt=1;
//   int num=0;
//   alarm(1); //1
//   // int fd=open(LOG,O_CREAT|O_WRONLY|O_TRUNC,0666);
//   while(cnt++)
//   {
//     num+=rand();
//     // write(fd,"hello",sizeof(char)*5);
//     cout<<cnt<<endl;
//   }
//   return 0;
// }
// int main()
// {
//   signal(2,handler);
//   int cnt=1;
//   pid_t pid=getpid();
//   while(true)
//   {
//     cout<<"hello"<<endl;
//     if(cnt++==2)
//      abort();
//     sleep(1);
//   }
//   // while(cnt++)
//   // {
//   //   sleep(1);
//   //   if(cnt==3)
//   //   kill(pid,2); //给当前进程发送2号信号
//   //   else if(cnt==5)
//   //   kill(pid,9); //给当前进程发9号信号
//   //   else
//   //   cout<<"hello"<<endl;
//   // }
//   return 0;
// }

